# ESP32 产品线 ```{admonition} 本文引用的文件 :class: note - `docs/README.md` - `firmware/README.md` - `esp32s3/firmware/README.md` - `firmware/port/Makefile` - `firmware/port/boards/mpython/mpconfigboard.h` - `firmware/port/boards/mpython-classroom-kit/mpconfigboard.h` - `firmware/port/boards/labplus-experiment-box-2024/mpconfigboard.h` - `esp32s3/firmware/boards/mpython_v3/mpconfigboard.h` - `esp32s3/firmware/main/Kconfig.projbuild` - `esp32s3/firmware/components/gen_bmgr_codes/board_manager.defaults` - [docs/docs/zh_CN/board/introduction.rst](../../../products/mpython/board/introduction.rst) ``` ## 产品概述 本项目为 ESP32 掌控板产品线的知识基座,覆盖标准掌控板、课堂套件、实验箱等板型,以及其对应的固件与文档体系。ESP32 版本基于 MicroPython + ESP-IDF v3.3.2/v4.0.1 + Makefile 构建;ESP32-S3 版本基于 ESP-IDF v5.x + MicroPython + CMake 构建,并新增 LVGL、AI 视觉等能力。文档源位于 docs/(Sphinx + reStructuredText),固件源位于 firmware/(ESP32)与 esp32s3/firmware/(ESP32-S3)。 - 目标用户:K12 教师与学生、创客开发者、教育设备集成商 - 核心价值:以 Python 降低入门门槛,提供从图形化到代码的平滑学习路径;通过多板型覆盖教学、竞赛、实验场景 - 适用场景:课堂编程、项目式学习、物联网原型开发、AI 语音/视觉体验 **章节来源** - `docs/README.md:1-16` - `firmware/README.md:1-57` - `esp32s3/firmware/README.md:1-242` - [docs/docs/zh_CN/board/introduction.rst:1-18](../../../products/mpython/board/introduction.rst) ## 核心业务流程 围绕“选择板型 → 配置构建环境 → 编译固件 → 烧录运行”的主流程,结合不同板型的差异化配置,形成统一的可复用构建链路。 ```text flowchart TD A["开始"] --> B{"选择板型"} B --> |ESP32| C["设置 ESPIDF 环境变量
指向 v3.3.2 或 v4.0.1"] B --> |ESP32-S3| D["安装 ESP-IDF v5.x
准备 CMake 工具链"] C --> E["指定 BOARD=mpython / classroom-kit / experiment-box"] D --> F["通过 Kconfig 选择 mpython_v3 / Ledong_v2 等"] E --> G["执行 make submodules && make"] F --> H["执行 idf.py build / make 构建"] G --> I["生成 bootloader.bin / partitions.bin / application.bin"] H --> I I --> J["使用 esptool 或 idf.py flash 烧录"] J --> K["上电运行 REPL 与示例程序"] ``` **图示来源** - `firmware/port/Makefile:1-52` - `esp32s3/firmware/README.md:77-143` **章节来源** - `firmware/port/Makefile:1-52` - `esp32s3/firmware/README.md:77-143` ## 功能模块清单 本仓库按“文档 + 固件 + 板型配置”组织,形成面向教学与开发的完整能力矩阵。 - 文档层(docs/) - 中文文档(docs/docs/zh_CN/):板卡介绍、驱动、库参考、教程、项目指南、FAQ - 示例代码(docs/examples/):display/button/audio/ble/IoT/game 等分类,便于快速上手 - 固件层(firmware/port/) - builtins/:C 级模块(machine/motion/music/radio/network 等) - modules/:Python 级模块(bluebit/gui/neopixel/urequests 等) - drivers/:C 硬件驱动(codec/mpu6050/rfid/rgbLED5x5) - file_system/:扩展库(siot/yeelight/xunfei/smartcamera 等) - 板型配置(firmware/port/boards/) - mpython(标准掌控板) - mpython-classroom-kit(课堂套件) - labplus_classroom_kit_II(课堂套件 II) - labplus_1956 - labplus-experiment-box-2024(实验箱) - GENERIC(通用) - ESP32-S3 固件层(esp32s3/firmware/) - 新增 usercmodule(LVGL 绑定、ESP-Who AI 视觉) - 新增 components(esp_lcd_jd9853 屏幕驱动、gen_bmgr_codes) - 新增 modules(ai_cloud、ATGM336H_5N、max30102、CSK6011A、xgo 等) - ESP32-S3 板型配置(esp32s3/firmware/boards/) - mpython_v3(标准 S3 掌控板) - labplus_Ledong_v2(乐动掌控 2.0) - labplus_for_xuejing(学境版) - labplus_xunfei_js_primary / middle(讯飞 JS 初级/中级版) **章节来源** - `docs/README.md:1-16` - `firmware/README.md:1-57` - `esp32s3/firmware/README.md:1-242` ## 数据与状态 - 板型标识与 MCU 名称 - ESP32 板型在 mpconfigboard.h 中定义 MICROPY_HW_BOARD_NAME 与 MICROPY_HW_MCU_NAME - ESP32-S3 板型同样在 mpconfigboard.h 中声明,并通过 Kconfig 选择具体板型 - 构建产物状态 - ESP32:make 生成 bootloader.bin、partitions.bin、application.bin,最终打包为 firmware.bin - ESP32-S3:idf.py/build 生成对应分区与应用镜像,支持 OTA/SPIRAM 等变体 - 运行时状态 - 通过 REPL(UART/USB)进行交互调试 - WiFi/BLE 连接状态由网络模块管理 - 传感器与外设状态由各自驱动维护(如 motion、audio、framebuf) ```text classDiagram class BoardConfig { +string board_name +string mcu_name +bool adc_enabled +bool dac_enabled } class BuildSystem { +string toolchain +string idf_version +string target_board +generate_bin() } class Runtime { +repl() +wifi_state() +peripheral_status() } BoardConfig --> BuildSystem : "决定编译选项" BuildSystem --> Runtime : "生成可执行镜像" ``` **图示来源** - `firmware/port/boards/mpython/mpconfigboard.h:1-22` - `firmware/port/boards/mpython-classroom-kit/mpconfigboard.h:1-26` - `firmware/port/boards/labplus-experiment-box-2024/mpconfigboard.h:1-21` - `esp32s3/firmware/boards/mpython_v3/mpconfigboard.h:1-29` - `esp32s3/firmware/main/Kconfig.projbuild:1-32` **章节来源** - `firmware/port/boards/mpython/mpconfigboard.h:1-22` - `firmware/port/boards/mpython-classroom-kit/mpconfigboard.h:1-26` - `firmware/port/boards/labplus-experiment-box-2024/mpconfigboard.h:1-21` - `esp32s3/firmware/boards/mpython_v3/mpconfigboard.h:1-29` - `esp32s3/firmware/main/Kconfig.projbuild:1-32` ## 关键约束与边界 - 构建环境与依赖 - ESP32:要求 ESP-IDF v3.3.2 或 v4.0.1(通过 git hash 校验),pyparsing < 2.4;需 xtensa-esp32-elf 工具链 - ESP32-S3:要求 ESP-IDF v5.x(如 v5.0.4),CMake 工具链;支持 OTA、SPIRAM 等变体 - 板型差异边界 - ESP32 板型通过 mpconfigboard.h 启用/禁用 ADC/DAC、内置模块(motion、rgbLED5x5) - ESP32-S3 板型通过 Kconfig 选择具体板型,并在 mpconfigboard.h 中启用音频、RFID、I2C 等新特性 - 运行时边界 - 网络:WiFi/BLE 需在系统初始化后配置;部分板型需切换天线 - 存储:NVS 用于持久化配置;文件系统支持 FAT/LFS2 - 显示:ESP32 使用 OLED(SSD1106),ESP32-S3 使用 TFT LCD(st7789) - 许可与开源协议 - 软件 GPL-3,硬件 CERN,文档 CC0;OSHWA 认证开源硬件 **章节来源** - `firmware/port/Makefile:65-118` - `esp32s3/firmware/README.md:22-75` - `firmware/port/boards/mpython-classroom-kit/mpconfigboard.h:1-26` - `esp32s3/firmware/boards/mpython_v3/mpconfigboard.h:1-29` - `esp32s3/firmware/main/Kconfig.projbuild:1-32` - `firmware/README.md:44-57`